package com.common.service.casemanage;

import com.common.entity.casemanage.CaseEntity;
import com.common.excel.BaseImportVo;
import com.common.excel.ImportService;
import com.common.query.ConditionService;
import com.common.requestvo.casemanage.CaseForQualityReqVo;
import com.common.requestvo.casemanage.CaseProblemSituationReqVo;
import com.common.requestvo.casemanage.CaseQualityFlowReqVo;
import com.common.requestvo.casemanage.CaseReqVo;
import com.common.vo.casemanage.CaseForQualityFlowVo;
import com.common.vo.casemanage.CaseForRiskVo;
import com.common.vo.casemanage.CaseProblemSituationVo;
import com.common.vo.casemanage.CaseVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author johnny
 * @create 2021-05-14 8:57 下午
 **/
public interface CaseService extends ConditionService<CaseEntity>, ImportService<BaseImportVo> {
    /**
     * 分页查询接口
     *
     * @param caseReqVo : caseReqVo
     * @param pageVo    : pageVoCaseServiceImpl
     * @return : Page<CaseVo>
     */
    Page<CaseVo> listByCondition(CaseReqVo caseReqVo, Pageable pageVo);

    void add(CaseVo caseVo);

    void edit(CaseVo caseVo);

    void delete(Long id);


    Page<CaseVo> listByConditionForQuality(CaseForQualityReqVo caseForQualityReqVo, Pageable initPage);

    void addRiskForCase(CaseForRiskVo caseForRiskVo);

    Long findCaseRiskCountByPersonalId(Long personalId);

    List<CaseProblemSituationVo> findAllCaseProblem();

    List<CaseProblemSituationVo> findCaseSituationByProblemId(Long problemId);

    void addCaseProblemSituation(CaseProblemSituationReqVo caseProblemSituationReqVo);

    void editCaseProblemSituation(CaseProblemSituationReqVo caseProblemSituationReqVo);

    void addQualityFlowForCase(CaseForQualityFlowVo caseForQualityFlowVo);

    List<CaseForQualityFlowVo> findCaseQualityFlowList(CaseQualityFlowReqVo caseQualityFlowReqVo);

    void editQualityFlowForCase(CaseForQualityFlowVo caseForQualityFlowVo);

    void deleteCaseQualityFlowList(Long id);

    void editRiskForCase(CaseForRiskVo caseForRiskVo);

    void deleteRiskForCase(Long id);

    CaseForRiskVo   findRiskForCaseByCaseId(Long caseId);

    Long findCaseQualityFlowCountByPersonalId(Long personalId);

    void deleteProblem(Long id);

    void deleteSituation(Long id);
}